package com.yida.gwj.basis.service;

import com.yida.gwj.basis.domain.GwjInitBusiness;
import com.yida.gwj.basis.domain.GwjInitBusinessLog;
import com.yida.gwj.basis.domain.dto.GwjInitBusinessFlowDTO;

import java.util.List;
import java.util.Map;

/**
 * 业务（基础数据管理模块）Service接口
 *
 * @author lqq
 * @date 2022-11-15
 */
public interface IGwjInitBusinessService {

	/**
	 * 新增业务（基础数据管理模块）
	 *
	 * @param gwjInitBusiness 业务（基础数据管理模块）
	 * @return 结果
	 */
	public int insert(GwjInitBusiness gwjInitBusiness);

	/**
	 * 修改业务（基础数据管理模块）
	 *
	 * @param gwjInitBusiness 业务（基础数据管理模块）
	 * @return 结果
	 */
	public int updateById(GwjInitBusiness gwjInitBusiness);


	/**
	 * 查询基础数据（业务）列表
	 *
	 * @param business 基础数据请求参数（业务）
	 * @return 基础数据（业务）集合
	 */
	List<GwjInitBusiness> getList(GwjInitBusiness business);

	/**
	 * 查询基础数据（业务）
	 *
	 * @param bizId 业务ID
	 * @return /
	 */
	GwjInitBusiness getById(Long bizId);

	/**
	 * 查询业务流程
	 *
	 * @param bizId     业务ID
	 * @param bizFlagId 业务标识
	 * @return /
	 */
	List<GwjInitBusinessFlowDTO> getBusinessFlow(Long bizId, Integer bizFlagId);

	/**
	 * 验证当前用户是否有操作权限
	 *
	 * @param bizId 业务ID
	 * @return /
	 */
	GwjInitBusiness checkPermission(Long bizId);

	/**
	 * 案例信息
	 *
	 * @param bizId 业务ID
	 * @return /
	 */
	GwjInitBusiness caseInfo(Long bizId);

	/**
	 * 获取拉取过的楼栋
	 *
	 * @param areaId      地区ID
	 * @param projectCode 项目标识码
	 * @return /
	 */
	List<Map<String, Object>> getExistBuild(Long areaId, String projectCode);

	/**
	 * 删页
	 *
	 * @param bizId 业务id
	 */
	void deleteByBizId(Long bizId);

	/**
	 * 送件
	 *
	 * @param businessLog 意见请求参数
	 */
	void send(GwjInitBusinessLog businessLog);

	/**
	 * 签署意见
	 *
	 * @param businessLog 意见请求参数
	 */
	void signOpinion(GwjInitBusinessLog businessLog);

	/**
	 * 回退
	 *
	 * @param businessLog 意见请求参数
	 */
	void fallback(GwjInitBusinessLog businessLog);
}
